home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 140
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin
/
tools
/
xpicw
/
xpicw110.lzh
/
WLSource
/
dol.s
< prev
next >
Wrap
Text File
|
1997-04-10
|
2KB
|
130 lines
* dol.s Dot OverLap
* ドットのオーバーラップ / 最高速 = 4
* by Mitsuky
SPEED_MAX equ 4
.offset 8 * 引き数
_source_ptr: .ds.l 1
_dest_ptr: .ds.l 1
_speed: .ds.l 1
_vdisp: .ds.l 1
.text
.even
.dc.b 'WL10',$0d,$0a
.dc.b 'ドットのオーバーラップ / 最高速 = 4',$0d,$0a
.dc.b ' by Mitsuky',$0d,$0a
.dc.b $1a
.even
dol:
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
move.l _speed(a6),d0
bmi dol_ask_speed
cmpi.l #SPEED_MAX,d0
bhi dol_err
tst.l _vdisp(a6)
bmi dol_ask_vdisp
moveq.l #4,d3
sub.w d0,d3 * d3.w = vdisp 待ち回数-1
movea.l _source_ptr(a6),a2 * a2.l = 転送元アドレス・その1
movea.l _dest_ptr(a6),a3 * a3.l = 転送先アドレス・その1
moveq.l #8-1,d7 * d7.w = ループ回数-1
dol_loop_y:
moveq.l #8-1,d6 * d6.w = ループ回数-1
dol_loop_x:
move.w d3,d0
@@: bsr vdisp
dbra d0,@b
movea.l a2,a0
movea.l a3,a1
moveq.l #64-1,d5
dol_loop_y2:
moveq.l #64/16-1,d4
dol_loop_x2:
move.w (a0),(a1)
move.w 16*1(a0),16*1(a1)
move.w 16*2(a0),16*2(a1)
move.w 16*3(a0),16*3(a1)
move.w 16*4(a0),16*4(a1)
move.w 16*5(a0),16*5(a1)
move.w 16*6(a0),16*6(a1)
move.w 16*7(a0),16*7(a1)
move.w 16*8(a0),16*8(a1)
move.w 16*9(a0),16*9(a1)
move.w 16*10(a0),16*10(a1)
move.w 16*11(a0),16*11(a1)
move.w 16*12(a0),16*12(a1)
move.w 16*13(a0),16*13(a1)
move.w 16*14(a0),16*14(a1)
move.w 16*15(a0),16*15(a1)
lea.l 16*16(a0),a0
lea.l 16*16(a1),a1
dbra d4,dol_loop_x2
lea.l 7*512*2(a0),a0
lea.l 7*512*2(a1),a1
dbra d5,dol_loop_y2
addq.w #2,a2
addq.w #2,a3
dbra d6,dol_loop_x
adda.w #(512-8)*2,a2
adda.w #(512-8)*2,a3
dbra d7,dol_loop_y
moveq.l #0,d0
dol_rts:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
**** ****
vdisp:
movem.l a0,-(sp)
move.l _vdisp(a6),a0
jsr (a0)
movem.l (sp)+,a0
rts
**** ****
dol_err:
moveq.l #-1,d0
bra dol_rts
**** ****
dol_ask_speed:
moveq.l #SPEED_MAX,d0
bra dol_rts
**** ****
dol_ask_vdisp:
move.l _speed(a6),d0
lea.l ask_vdisp_table(pc),a0
add.w d0,d0
move.w (a0,d0.w),d0
bra dol_rts
ask_vdisp_table:
.dc.w 64*5,64*4,64*3,64*2,64*1